var testUtil = {

    // 测试数组根据数量分组
    testArrSlice: function () {
        var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24];
        var cellNum = 5;
        var newArr = [];
        for (var i = 0; i < Math.ceil(arr.length / cellNum); i++) {
            newArr.push(arr.slice(i * cellNum, (i + 1) * cellNum));
        }
        console.log(newArr);
    },

    // 测试 number
    testNumber: function () {
        // 取整
        // 1、Math.round() 四舍五入
        console.log(Math.round(12.5)); // 13
        console.log(Math.round(12.4)); // 12

        //2、Math.ceil() 向上取整
        console.log(Math.ceil(12.1)); // 13
        console.log(Math.ceil(12.1111)); // 13
        console.log(Math.ceil(12.1111 * 100) / 100); // 12.12  // 保留两位小数

        //3、Math.floor() 向下取整
        console.log(Math.floor(12.9)); // 12
        console.log(Math.floor(12.9999)); // 12
        console.log(Math.floor(12.9999 * 100) / 100); // 12.99


        // 坑（计算机不能精确表示0.1， 0.2这样的浮点数，计算时使用的是带有舍入误差的数）
        console.log(0.1 + 0.2 === 0.30000000000000004);
        console.log(Math.round((0.1 + 0.2) * 100) / 100 === 0.3);
    },


    // 测试 BigDecimal
    testBigDecimal: function () {
        /**
         * setScale(scale, roundingMode) 格式化小数点
         *
         * @param scale 小数点后的位数
         * @param roundingMode 小数的保留模式
         *
         * ROUND_UP 直接对指定位数后的内容做进一位处理
         * ROUND_DOWN 直接省略掉指定位数后的内容
         * ROUND_CEILING 向上取整。正数进位向上，负数舍位向上
         * ROUND_FLOOR 向下取整。正数舍位向下，负数进位向下
         * ROUND_HALF_UP 四舍五入。遇到.5的情况时往上近似,例: 1.5 -> 2
         * ROUND_HALF_DOWN 伪四舍五入。遇到.5的情况时往下近似,例: 1.5 -> 1
         * ROUND_HALF_EVEN 指定小数位的前一位如果是奇数则四舍五入后进位，如果是偶数则舍弃指定小数位后面内容
         * ROUND_UNNECESSARY 断言请求的操作具有精确的结果，因此不需要舍入
         */
        console.log(new BigDecimal("2.225667").setScale(2, MathContext.ROUND_CEILING).toString());
        console.log(new BigDecimal("2.225667").setScale(2, MathContext.ROUND_FLOOR).toString());

        console.log(new BigDecimal("1.5").setScale(0, MathContext.ROUND_HALF_UP).toString());
        console.log(new BigDecimal("1.5").setScale(0, MathContext.ROUND_HALF_DOWN).toString());

        // 测试 0.1 + 0.2
        console.log(new BigDecimal("0.1").add(new BigDecimal("0.2")).setScale(2, MathContext.ROUND_HALF_UP).toString());
    },

    // 测试 cashConversionTools
    testCashConversionTools: function () {
        // 测试 0.1 + 0.2
        console.log(cashConversionTools.toDecimal(cashConversionTools.plus(0.1, 0.2), 2));

        // 数字转换中文金额
        console.log(cashConversionTools.amtUpCase("110.12"));
    },

    // 测试 json2
    testJson2: function () {
        console.log(JSON2.stringify({"name": "xiaoming", "hoby": ["1", "2", "3"], "age": 18})); // 序列化
        console.log(JSON2.parse("{\"name\":\"xiaoming\",\"hoby\":[\"1\",\"2\",\"3\"],\"age\":18}")); // 反序列化
    },

    // 测试 staticTools
    testStaticTools: function () {
        console.log(staticTools.isArray(['1']) + ", " + staticTools.isArray("123"));
        console.log(staticTools.isNum("1") + ", " + staticTools.isNum("aaa"));
    },

    // 测试 co 函数
    testCO: function () {
        co(function* () {

            console.log('任务1开始!');
            yield new Promise(function (resolve, reject) {
                var randomNumber = Math.round(Math.random());
                console.log("获取0到1的随机整数，0失败，1成功...");
                window.setTimeout(function () {
                    console.log("随机数：" + randomNumber);
                    if (randomNumber === 1) {
                        resolve("成功!");
                    } else {
                        reject("失败!");
                    }
                }, 3000);
            }).then(function (result) {
                console.log(result);
            }, function (result) {
                console.log(result);
            });

            console.log('任务2开始!');
            yield new Promise(function (resolve, reject) {
                var randomNumber = Math.round(Math.random());
                console.log("获取0到1的随机整数，0失败，1成功...");
                window.setTimeout(function () {
                    console.log("随机数：" + randomNumber);
                    if (randomNumber === 1) {
                        resolve("成功!");
                    } else {
                        reject("失败!");
                    }
                }, 3000);
            }).then(function (result) {
                console.log(result);
            }, function (result) {
                console.log(result);
            });

            console.log('任务3开始!');
            yield new Promise(function (resolve, reject) {
                var randomNumber = Math.round(Math.random());
                console.log("获取0到1的随机整数，0失败，1成功...");
                window.setTimeout(function () {
                    console.log("随机数：" + randomNumber);
                    if (randomNumber === 1) {
                        resolve("成功!");
                    } else {
                        reject("失败!");
                    }
                }, 3000);
            }).then(function (result) {
                console.log(result);
            }, function (result) {
                console.log(result);
            });

        }).then(function () {
            console.log('任务全部执行结束!');
        });
    },

    testSplit: function () {
        var orignStr = '张三:80,李四:60,王五:100';
        var totalScore = 0;
        var nsList = orignStr.split(',');
        nsList.forEach(ns => {
            var score = ns.split(':')[1];
            totalScore += Number(score);
        });
        console.log(totalScore);
    },
};
